package br.com.wssa.smmb.dao.impl;

import org.apache.commons.codec.digest.DigestUtils;
import org.hibernate.Query;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import br.com.wssa.smmb.dao.UsuarioDAO;
import br.com.wssa.smmb.entidades.Usuario;

/**
 * Classe UsuarioDAOImpl.
 * @author ssilva
 */
@Transactional(propagation=Propagation.SUPPORTS)
@Repository("daoUsuario")
public class UsuarioDAOImpl extends GenericDAOImpl<Usuario> implements UsuarioDAO {

	@Override
	protected Class<Usuario> getClazz() {
		return Usuario.class;
	}

	@Override
	public Usuario getUsuario(String login, String senha) {
		Query query = getSession().createQuery("from Usuario usr where usr.login = ? and usr.hashSenha = ?");
		query.setString(0, login);
		query.setString(1, DigestUtils.sha256Hex(senha));
		return (Usuario) query.uniqueResult();				   
	}

	@Override
	public Usuario getUsuario(String login) {
		Query query = getSession().createQuery("from Usuario usr where usr.login = ?");
		query.setString(0, login);
		return (Usuario) query.uniqueResult();
	}

	@Override
	public Usuario obterUsuarioPorEmail(String email) {
		Query query = getSession().createQuery("from Usuario usr where usr.email = ?");
		query.setString(0, email);
		return (Usuario) query.uniqueResult();
	}
}
